                                                                                                                                                                    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio;

import BO.usuarioBO;
import Visualização.login;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Fabio
 */
public class usuario {
    
    private boolean status;
    
    public void updateStatus(BO.usuarioBO uBO, boolean flag){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        db.updateUsuarioStatus(uBO, flag);
    }
    
    public boolean verificar (BO.usuarioBO uBO,String usuario, String senha, login aThis)
    {
        if (uBO.getLoginBO().equals(""))
        {
            JOptionPane.showMessageDialog(aThis, "Favor preencher o campo usuário!");
            return false;
        }
        else if (uBO.getSenhaBO().equals(""))
        {
            JOptionPane.showMessageDialog(aThis, "Favor preencher o campo senha!");
            return false;
        }
        else if (uBO.getSenhaBO().length() < 6)
        {
            JOptionPane.showMessageDialog(aThis, "A senha deve possuir pelo menos 6 digitos");
            return false;
        }
        return true;
    }
    
    public boolean verificarDados (BO.usuarioBO uBO, Visualização.usuarios_incluir aThis)
    {
        if (uBO.getLoginBO().equals(""))
        {
            JOptionPane.showMessageDialog(aThis, "Favor preencher o campo usuário!");
            return false;
        }
        else if (uBO.getSenhaBO().equals(""))
        {
            JOptionPane.showMessageDialog(aThis, "Favor preencher o campo senha!");
            return false;
        }
        else if (uBO.getSenhaConfirmaBO().equals(""))
        {
            JOptionPane.showMessageDialog(aThis, "Favor preencher o campo senha!");
            return false;
        }
        else if (!uBO.getSenhaConfirmaBO().equals(uBO.getSenhaBO()))
        {
            JOptionPane.showMessageDialog(aThis, "As senhas devem ser identicas!");
            return false;
        }
        else if (uBO.getSenhaBO().length() < 6)
        {
            JOptionPane.showMessageDialog(aThis, "A senha deve possuir pelo menos 6 digitos");
            return false;
        }
        return true;
    }
    
    public boolean logar(BO.usuarioBO uBO, login aThis) throws Exception
    {
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
               
        if (verificar(uBO, uBO.getLoginBO(), uBO.getSenhaBO(), aThis))
        {
            db.buscarLoginData(uBO);
            if (db.numRows == 0)
            {
                JOptionPane.showMessageDialog(aThis, "Usuário ou Senha inválidos!"); 
                return false;
            } else {
                JOptionPane.showMessageDialog(aThis, "Login realizado com sucesso!"); 
                return true;
            }
        } else {
            // Mensagem de erro vem de verificar()
            //JOptionPane.showMessageDialog(aThis, "Usuário ou Senha inválidos!");
            uBO.setLoginBO("");
            uBO.setSenhaBO("");
            return false;
        }
    }
    
    public void Excluir(BO.usuarioBO u){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try {
            db.excluirUsuario(u);
        } catch (Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    public void admAlterarSenha(BO.usuarioBO u){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try {
            db.updateSenhaAdmin(u);
        } catch (Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    public void UpdateUsuario(BO.usuarioBO u){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try {
            db.updateUsuario(u);
        } catch (Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }

   public void SalvarUsuario(BO.usuarioBO u, Visualização.usuarios_incluir aThis){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try {
            if(this.verificarDados(u, aThis)){
                db.salvaUsuario(u);
            }
        } catch (Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    public void BuscarPorLogin(BO.usuarioBO u){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try{
            db.buscarPorLogin(u);
        } catch(Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    public void BuscarPorMatricula(BO.usuarioBO u){
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        try{
            db.buscarPorMatricula(u);
        } catch(Exception e){
            JOptionPane erro = new JOptionPane();
            JOptionPane.showMessageDialog(null, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    public boolean verificarSenhaAlterar(BO.usuarioBO uBO)
    {
        if (uBO.getSenhaAtualBO().equals(""))
        {
            JOptionPane.showMessageDialog(null, "O campo Senha Atual deve ser preenchido!"); 
            return false;
        }          
        else if (uBO.getNovaSenhaBO().equals(""))
        {
            JOptionPane.showMessageDialog(null, "O campo Nova Senha deve ser preenchido!");
            return false;
        }            
        else if (uBO.getNovaSenhaConfirmaBO().equals(""))
        {
            JOptionPane.showMessageDialog(null, "O campo Confirmar Senha deve ser preenchido!");
            return false;
        }  
        else if (!uBO.getSenhaBO().equals(uBO.getSenhaAtualBO()))
        {
            JOptionPane.showMessageDialog(null, "Você não digitou corretamente a senha atual!");
            return false;  
        }
        else if (!uBO.getNovaSenhaBO().equals(uBO.getNovaSenhaConfirmaBO()))
        {
            JOptionPane.showMessageDialog(null, "O campo Nova senha e Confirmar Senha devem ser iguais!");  
            return false;
        }
        else if (uBO.getSenhaAtualBO().equals(uBO.getNovaSenhaBO()))
        {
            JOptionPane.showMessageDialog(null, "A nova senha deve ser diferente da senha atual!");
            return false;
        }
        else if (uBO.getNovaSenhaBO().length()<6)
        {
            JOptionPane.showMessageDialog(null, "A nova senha deve possuir no mínimo 6 digitos");  
            return false;                
            
        }
        return true;
    }
    
    public boolean alterarSenha(BO.usuarioBO uBO) throws Exception
    {
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        if (this.verificarSenhaAlterar(uBO))
        {
            uBO.setSenhaBO(uBO.getNovaSenhaBO());
            db.updateSenha(uBO);
            JOptionPane.showMessageDialog(null, "Senha alterada com sucesso!");
            return true;          
        }        
        return false;
    }
    
    public int buscarUsuariosOnline() throws SQLException{
        Persistencia.usuarioDAO db;
        db = new Persistencia.usuarioDAO();
        
        return db.buscarUsuariosOnline();
    }
}
